package bigdata.backend.utils;

import java.util.regex.Pattern;

public class ColumnNameValidator {
    // Doris / MySQL / PG 允许的字段名：字母、数字、下划线，可带反引号（但前端传纯名）
    // 实际建议：只允许 [a-zA-Z0-9_]，且必须以字母开头
    private static final Pattern COLUMN_NAME_PATTERN = Pattern.compile("^[a-zA-Z][a-zA-Z0-9_]*$");

    public static String validate(String columnName) {
        if (columnName == null || columnName.isEmpty()) {
            throw new IllegalArgumentException("字段名不能为空");
        }
        if (!COLUMN_NAME_PATTERN.matcher(columnName).matches()) {
            throw new IllegalArgumentException("字段名格式非法，仅允许字母、数字、下划号，且必须以字母开头");
        }
        // 长度限制（Doris 字段名最大 64 字节）
        if (columnName.length() > 64) {
            throw new IllegalArgumentException("字段名长度不能超过 64 个字符");
        }
        return columnName;
    }
}